/**
 * 维护成员继承关系 RTTI 的辅助类，使用 prefix 保存继承链的信息。
 * 该类的子类需要使用 setName 注册自己的类名。
 */

#ifndef PREFIXOBJECT_H
#define PREFIXOBJECT_H

#include <string>
#include "json/json-forwards.h"

class PrefixObject{
private:
public:
    std::string name;
	std::string prefix;
    bool hidden;
    inline explicit PrefixObject(){
        this->name = "";
        this->prefix = "_";
        this->hidden = false;
    }
	inline void setName(const std::string &s){
        this->name = s;
        this->prefix += s + "_";
    }
    virtual ~PrefixObject(){}
	inline bool hasPrefix(const std::string &str)const {return prefix.find(str) != std::string::npos;}
    virtual Json::Value toJson();
};

#endif // PREFIXOBJECT_H
